Systems and methods to create a clean install of an application

ABSTRACT

Disclosed herein are methods, systems, and software for computer application installation. In one example, a method of computer application installation includes executing a computer application installer. The method further provides, interrupting the computer application installer with a clean install mechanism, and forcing installation of all application components even if one or more of the application components was previously installed.

RELATED APPLICATIONS

This application is a continuation of, and claims priority to, U.S.application Ser. No. 13/926,207, filed on Jun. 25, 2013, and entitled“SYSTEMS AND METHODS TO CREATE A CLEAN INSTALL OF AN APPLICATION,” whichitself claims the benefit of and priority to U.S. Provisional PatentApplication 61/663,824, titled “SYSTEMS AND METHODS TO CREATE A CLEANINSTALL OF AN APPLICATION”, filed Jun. 25, 2012, both of which arehereby incorporated by reference in their entirety.

BACKGROUND

Computer applications typically require directories, registry keys,files, and other application components to operate on a computeroperating system. These files direct the processing system to completecertain tasks for the end user of the computing device. Such tasksinclude word processing, calculations, image editing, among otheroperations—including combinations thereof.

Typically, when a user attempts to install an application, aninstallation may include the unpacking of files supplied in compressedform, copying them to suitable locations, tailoring the software to suitthe hardware and the user's preferences, providing information about theoperating system, and checking for shared files already installed on themachine. In cases where the machine contains shared files (often .dllfiles for Windows), the installer will typically not install these filesas they are redundant for the application and may simply identify themas needed for the application. Similarly, other shared components suchas directories and registry keys will also not be installed if theyalready exist on the system.

OVERVIEW

Examples disclosed herein provide methods, systems, and software forcomputer application installation. In one example, a method of computerapplication installation includes executing a computer applicationinstaller. The method further provides, interrupting the computerapplication installer with a clean install mechanism, and forcinginstallation of all application components even if one or more of theapplication components was previously installed.

In another instance, a computer readable medium having programinstructions stored thereon that, when executed by a computing system,direct the computing system to execute a computer application installer.The program instructions further direct the computing system tointerrupt the computer application installer with a clean installmechanism, and force installation of all application components even ifone or more of the application components was previously installed.

In another example, a system for installing a computer applicationincludes an application installer configured to query an operatingsystem for shared application components and install applicationcomponents on a computing system. The system further includes a cleaninstall mechanism configured to interrupt the query of the operatingsystem for the shared application components, and return that the sharedapplication components are not present.

In a further instance, a method for operating a computer applicationinstaller includes executing the computer application installer, andforcing installation of all application components even if one or moreof the application components was previously installed.

BRIEF DESCRIPTION OF THE DRAWINGS

The following description and associated figures teach the best mode ofthe invention. For the purpose of teaching inventive principles, someconventional aspects of the best mode can be simplified or omitted. Thefollowing claims specify the scope of the invention. Note that someaspects of the best mode cannot fall within the scope of the inventionas specified by the claims. Thus, those skilled in the art willappreciate variations from the best mode that fall within the scope ofthe invention. Those skilled in the art will appreciate that thefeatures described below can be combined in various ways to formmultiple variations of the invention. As a result, the invention is notlimited to the specific examples described below, but only by the claimsand their equivalents.

FIG. 1 illustrates a computing system for computer applicationinstallation according to one example.

FIG. 2 illustrates an application installation method according to oneexample.

FIG. 3 illustrates an application installation method according to oneexample.

FIG. 4 illustrates an application installation method according to oneexample.

FIG. 5 illustrates an application installation system according to oneexample.

FIG. 6 illustrates an application installation system according to oneexample.

FIG. 7 illustrates an application installation system according to oneexample

TECHNICAL DISCLOSURE

Systems and methods are provided herein to provide a “clean” install ofan application by installing all application components (including butnot limited to files, directories, and registry settings), even if someof the components were previously installed by other applications. In atleast one example, a user will begin the installation by executing astandard application installer for the program (i.e., a .exe or .zipinstaller for windows, or a .tar.gz or .rpm installer for Linux). Withinthe standard application installer, the user can choose preferences suchas the destination for the installation, the specific pieces of theapplication to install, among other preferences. Next, after the userhas chosen to install the application, the application installer willattempt to inquire the operating system about shared applicationcomponents, but will be intercepted by a clean install mechanism.

The clean install mechanism will stop the installer from locating theshared components and force the application to install all of theprogram's components. The install of all application components willensure that each application installed is separate and does not havedependencies on other programs. Thus, applications can be added orremoved without dependencies on one another.

FIG. 1 illustrates a computing system 100 with clean install capability.Computing system 100 may represent server computers, desktop computers,smart telephones, laptop computers, or other similar computing devices.Further, computing system 100 may represent a virtual machine, such as avirtual representation of a desktop computer, server computer, or othersimilar device. Computing system 100 includes processing system 102,software 104, storage system 106, communication interface 108, and userinterface 110. Processing system 102 loads and executes software 104,including clean install mechanism 140, from storage system 106. Whenexecuted by computing system 100, software 104 directs processing system102 to operate as a computing system described herein.

In one example, a user or service may select to install an application,such as application B 130, onto computing system 100. Application B 130may include word processing applications, web browsing applications,analytical applications, or any other application capable of executionon computing system 100. Upon selection of the application, a computerapplication installer 170 may be executed that permits the user or theservice to select the appropriate volume for the installation, theappropriate features for the installation, and any other relevantinstallation preferences. Once the preferences have been chosen, theinstaller will perform a shared application components query tooperating system 160 to determine shared application components, such asshared components 150. Application components include, but are notlimited to, files, directories, and registry settings.

Typically, operating system 160 will return a catalogue of the sharedcomponents to the application installer. However, in the presentexample, clean install mechanism 140, which may comprise a softwaremodule, will monitor for the execution of application installer 170 andwill interrupt the query of operating system 160 to ensure that allapplication components are installed. In one example, clean installmechanism 140 may immediately intercept the shared applicationcomponents query and return that no shared components, such as sharedcomponents 150, are present on computing system 100. In other examples,clean install mechanism 140 may work with operating system 160 to forcea return to installer 170 that no shared components, such as sharedcomponents 150, are present on computing system 100. In furtherinstances, clean install mechanism 140 may intercept the response ofoperating system 160 and return that no shared components are present oncomputing system 100.

Following the return that no shared components are present on computingsystem 100, installer 170 will install the application along with all ofits components. As illustrated in FIG. 1, application B 130 is installedwith components 131 and shared components 150. As a result, applicationB 130 does not rely on the shared components 150 of application A 120,but instead relies on its own copy of shared components 150.

In one example, clean install mechanism 140 may be implemented withcomputer application installer 170. In such instances, installer 170will be executed to install the necessary application components and,instead of querying operating system 160, will install all necessaryapplication components. Thus, application installer 170 will install allapplication components without a shared application components query. Insome instances, skipping the shared application components query may bean install preference selected by the user of computing system 100. Inother examples, installer 170 may skip the shared application componentsquery based on the storage volume assigned for the applicationcomponents or other install factors.

Application installer 170 may include .exe or .zip installers forwindows, .tar.gz or .rpm installers for Linux, among other applicationinstallers. Installer 170 may include variety of install capabilitiesfor installing application B on computing system 100. These installcapabilities may include unpacking application components in compressedform, copying the application components to suitable locations,tailoring the software to suit the hardware and the user's preferences,providing information about the operating system, and checking forshared files already installed on the machine. In some examples ofexecuting installer 170, installer 170 may be automated and attempt toinstall application B 130 without user input or interaction. In otherinstances of executing application installer 170, the user may selectpreferences such as a suitable install location in storage system 106,features for application 130, among other preferences—includingcombinations thereof. Based on these user preferences, installer 170 mayunpack application components 131 and attempt to install components 131in storage system 106.

Communication interface 108 comprises components that communicate overcommunication links, such as network cards, ports, RF transceivers,processing circuitry and software, or some other communication devices.Communication interface 108 may be configured to communicate overmetallic, wireless, or optical links. Communication interface 108 may beconfigured to use TDM, IP, Ethernet, optical networking, wirelessprotocols, communication signaling, or some other communicationformat—including combinations thereof. Communication interface 108 maybe omitted in some examples.

Referring still to FIG. 1, processing system 102 can comprise amicroprocessor and other circuitry that retrieves and executes software104 from storage system 106. Processing system 102 can be implementedwithin a single processing device, but can also be distributed acrossmultiple processing devices or sub-systems that cooperate in executingprogram instructions. Examples of processing system 102 includegeneral-purpose central processing units, application specificprocessors, and logic devices, as well as any other type of processingdevice, combinations of processing devices, or variations thereof.

Storage system 106 can comprise any storage media readable by processingsystem 102 and capable of storing software 104. Storage system 106 caninclude volatile and nonvolatile, removable and non-removable mediaimplemented in any method or technology for storage of information, suchas computer readable instructions, data structures, program modules, orother data. Storage system 106 can be implemented as a single storagedevice but can also be implemented across multiple storage devices orsub-systems. Storage system 106 can comprise additional elements, suchas a controller, capable of communicating with processing system 102.

Examples of storage media include random access memory, read onlymemory, magnetic disks, optical disks, flash memory, virtual andnon-virtual memory, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and that can be accessed by aninstruction execution system, as well as any combination or variationthereof, or any other type of storage media. In some implementations,the storage media can be a non-transitory storage media. In someimplementations, at least a portion of the storage media can betransitory. It should be understood that in no case is the storage mediaa propagated signal.

User interface 110 can include a mouse, a keyboard, a voice inputdevice, a touch input device for receiving a gesture from a user, amotion input device for detecting non-touch gestures and other motionsby a user, and other comparable input devices and associated processingelements capable of receiving user input or user instructions. Outputdevices such as a video display or graphical display, speakers, printer,haptic devices, and other types of output devices can also be includedin user interface 110. User interface 110 may be omitted in someexamples.

FIG. 2 is a flowchart illustrating a method for creating a clean installof an application. As illustrated in FIG. 2, the method begins at step210 by executing the standard application installer. This applicationinstaller may seek preferences prior to installing applicationcomponents, including the volume to install application components, thefeatures to be installed with the application, among otherpreferences—including combinations thereof. After the preferences areselected, the application installer will perform a shared applicationcomponents query to determine application components already installedon the destination computing system. During this inquiry, the query isimmediately interrupted by the clean install mechanism at step 220. Theclean install mechanism will stop the standard installer from checkingfor possible shared components and, instead, force the installer at step230 to install all necessary application components to the appropriatevolume. The volume capturing installed components in step 230 could bethe C: drive for a Microsoft Windows operating system or any othervolume.

In one example, the clean install mechanism could immediately returnthat no shared components exist to the standard installer. Thus,notifying the installer to install all application components. In analternative instance, the clean install mechanism itself could installall application components. In other words, the clean install mechanismwould not return anything to the application installer, but rather,install all the application components itself.

FIG. 3 is a flowchart illustrating a method 300 for creating a cleaninstall of an application. As illustrated in FIG. 3, the method beginsat step 310 by executing the standard application installer. Next, atstep 320, the installer will query the operating system for possibleshared application components already installed within the storagesystem. Upon the operating system obtaining the shared applicationcomponents query, the clean install mechanism at step 330 will work withthe operating system to return a value to the standard applicationinstaller asserting that there are no shared application components atstep 340. Thus, the installer at step 350 will proceed to install allapplication components to the appropriate storage volume.

FIG. 4 is a flowchart illustrating a method 400 for creating a cleaninstall of an application. As illustrated in FIG. 4, the method beginsat step 410 by executing the standard application installer. Next, atstep 420, the installer will inquire the operating system for possibleshared or duplicate application components already installed. After thisinquiry, the operating system will respond to the application installerwith a catalogue of the components preexisting on the machine. However,prior to the installer receiving the information from the operatingsystem, the clean install mechanism will interrupt the response at step430. Instead of sending the installer the components that are alreadypresent on the system, the clean install mechanism will return that noshared application components are present (step 440). This will ensurethat at step 450, the installer installs all application components tothe appropriate volume including the files, directories, and registrykeys.

FIG. 5 illustrates a system 500 that includes a standard applicationinstaller 510, an operating system 520, and a clean install mechanism530. In the illustrated example, standard application installer 510 willattempt to inquire operating system 520 about possible sharedapplication components. Prior to the inquiry being received by operatingsystem 520, clean install mechanism 530 will intercept the request.Clean install mechanism 530 will then return to standard applicationinstaller 510 that no shared components exist. In turn, standardapplication installer 510 will proceed to install all applicationcomponents to the appropriate storage volume.

FIG. 6 illustrates a system 600 that includes a standard applicationinstaller 610, an operating system 620, and the clean install mechanism630. In the illustrated example, the standard application installer 610will inquire the operating system 620 about possible shared applicationcomponents. During the inquiry of operating system 620, the cleaninstall mechanism 630 will force the operating system 620 to return thatno shared components exist. In turn, the standard application installer610 will proceed to install all application components.

FIG. 7 illustrates a system 700 that includes a standard applicationinstaller 710, an operating system 720, and the clean install mechanism730. In the illustrated example, the standard application installer 710will inquire the operating system 720 about possible shared applicationcomponents. The operating system 720 will then check for sharedapplication components and attempt return the shared components thatexist. Prior to the return of the shared components, the clean installmechanism 730 will interrupt the operating system's response and,instead, return that no shared components exist. In turn, applicationinstaller 710 will proceed to install all application components.

The above description and associated figures teach the best mode of thedisclosure. The following claims specify the scope of the disclosure.Note that some aspects of the best mode may not fall within the scope ofthe disclosure as specified by the claims. Those skilled in the art willappreciate that the features described above can be combined in variousways to form multiple variations of the disclosure. As a result, thedisclosure is not limited to the specific examples described above, butonly by the following claims and their equivalents.

What is claimed is:
 1. An apparatus comprising: a storage device;program instructions stored on the storage device and comprising anapplication installer that, when executed by a processing system,directs the processing system to: prior to installing an application,check a clean-install setting to determine whether the clean-installsetting is enabled or disabled; when the clean-install setting isenabled, install a set of components associated with the application,even though at least a subset of the components comprise sharedcomponents that were previously installed in association with at leastone other application; and when the clean-install setting is disabled,initiate an inquiry to locate the shared components.
 2. The apparatus ofclaim 1 wherein the application comprises one of a suite of applicationsand wherein the one other applications comprises another one of thesuite of applications.
 3. The apparatus of claim 1 wherein the programinstructions further comprise a virtual machine that includes theapplication installer.
 4. The apparatus of claim 1 further comprisingthe processing system that reads and executes the program instructions.5. The apparatus of claim 1 wherein the shared components comprise atleast one of executable files and registry keys.
 6. A method ofinfluencing an application installation, the method comprising:monitoring for an application installer to attempt to locate componentsshared between an application and at least one other application that ispresently installed; and in response to the attempt by the applicationinstaller, indicating an absence of the components to prompt theinstaller to install another version of the components.
 7. The method ofclaim 7 wherein monitoring for the application installer to attempt tolocate the components comprises monitoring for queries directed by theapplication installer to an operating system component.
 8. The method ofclaim 6 wherein monitoring for the application installer to attempt tolocate the components comprises monitoring responses by an operatingsystem component sent in reply to queries directed by the applicationinstaller to the operating system component.
 9. The method of claim 6wherein monitoring for the application installer to attempt to locatethe components occurs when a clean-install setting is enabled and doesnot occur when the clean-install setting is disabled.
 10. The method ofclaim 6 wherein the application comprises one of a suite of applicationsand wherein the other application comprises another one of the suite ofapplications.
 11. The method of claim 6 wherein the components comprisedirectories, registry keys, and other files associated with theapplication.
 12. An apparatus comprising: one or more non-transitorycomputer readable media; program instructions stored on the one or morenon-transitory computer readable media for influencing an applicationinstallation that, when executed by a processing system, direct theprocessing system to at least: monitor for an application installer toattempt to locate components shared between an application and at leastone other application that is presently installed; and in response tothe attempt by the application installer, indicate an absence of thecomponents to prompt the installer to install another version of thecomponents.
 13. The apparatus of claim 12 wherein to monitor for theapplication installer to attempt to locate the components, the programinstructions direct the processing system to monitor for queriesdirected by the application installer to an operating system component.14. The apparatus of claim 12 wherein to monitor for the applicationinstaller to attempt to locate the components, the program instructionsdirect the processing system to monitor responses by an operating systemcomponent sent in reply to queries directed by the application installerto the operating system component.
 15. The apparatus of claim 12 whereinmonitoring for the application installer to attempt to locate thecomponents occurs when a clean-install setting is enabled and does notoccur when the clean-install setting is disabled.
 16. The apparatus ofclaim 12 wherein the application comprises one of a suite ofapplications.
 17. The apparatus of claim 16 wherein the otherapplication comprises another one of the suite of applications.
 18. Theapparatus of claim 17 further comprising the processing system thatreads and executes the program instructions.
 19. The apparatus of claim12 wherein the program instructions comprise a virtual machine.
 20. Theapparatus of claim 12 wherein the components comprise directories,registry keys, and other files associated with the application.